"""
example01 - 在设计函数的时候，函数的参数个数是暂时无法确定的

arguments ---> args ---> 参数

位置参数 ---> positional argument
关键字参数 ---> keyword argument ---> 参数名=参数值

关键字参数一定是在位置参数的后面！！！

Author: Administrator
Date: 2024/1/22
"""


# *args ---> 可变参数 ---> 可以接收零个或任意多个位置参数 ---> 将所有的关键字参数打包成一个元组
# **kwargs ---> 可以接收零个或任意多个关键字参数 ---> 将所有的关键字参数打包成一个字典
def add(*args, **kwargs):
    # print(args, type(args))
    total = 0
    for arg in args:
        if type(arg) in (int, float):
            total += arg
    for value in kwargs:
        if type(value) in (int, float):
            total += value
    return total
    # temp = [arg for arg in args if type(arg) in (int, float)]
    # temp2 = [value for value in kwargs.values() if type(value) in (int, float)]
    # return sum(temp) + sum(temp2)


def mul(*args, **kwargs):
    # print(args, type(args))
    total = 1
    for arg in args:
        if type(arg) in (int, float):
            total *= arg
    for value in kwargs:
        if type(value) in (int, float):
            total *= value
    return total
    # temp = [arg for arg in args if type(arg) in (int, float)]
    # temp2 = [value for value in kwargs.values() if type(value) in (int, float)]
    # return sum(temp) + sum(temp2)


add()
add(1,)
add(1, 2)
add(1, 2, 3)
add(1, 2, 3, 4)